package com.itheima.controller;

import com.itheima.common.LogInfo;
import com.itheima.common.ResultResponse;
import com.itheima.domain.User;
import com.itheima.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

/**
 * 目标对象
 */
@Controller
public class UserController {
    @Autowired
    UserService userService;

    /**
     * 需求分析：由于对每一个请求都需要采集日志信息，故而这里的日志公共是重复，可以抽离成切面类。可以使用spring aop来完成请求每一个方法的时候插入日志。
     * <p>
     * 1.步骤1：要对每一个请求的方法进行功能描述：使用自定义注解对该方法进行描述
     * 2.步骤2：在环绕通知中JoinPoint 可以queryUser方法名以及类名
     * 3.步骤3：在环绕通知中可以Date date=new Date();  SimpleDateFormat
     * 4.步骤4：在目标方法queryUser执行完之后，在返回通知中获取返回结果值
     * 5.步骤5：采集了日志数据之后 ，然后将日志对象插入到日志表
     * <p>
     * 综合分析：采用环绕通知能够在queryUser方法执行之前以及执行之后获取以上的日志数据
     */
    @LogInfo(operateDesc = "根据主键查询用户")
    public ResultResponse queryUser(Long id) {
        User user = userService.queryUser(id);
        return new ResultResponse(200, "操作成功", user);
    }
}
